// trait 方法中生命期的标注基本上与函数类似。注意，impl 也可能有生命周期的标注。
//
// 带有生命周期标注的结构体。
#[allow(dead_code)]
#[derive(Debug)]
struct Borrowed<'a> {
    x: &'a i32,
}
#[allow(dead_code)]
impl<'a> Default for Borrowed<'a> {
    fn default() -> Self {
        Self {
            x: &10,
        }
    }
}

#[test]
fn test_trait(){
    // 使用 Default::default(),变量声明时必须指定类型 :Borrowed
    // let b: Borrowed = Default::default();
    // 使用 Borrowed::default();，变量声明时，会自动推断变量类型
    let b = Borrowed::default();
    println!("b is {:?}", b);
}